package algorithmExample.tree;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author: zhangrongqing
 * @Date: 2019/11/20 17:54
 */
public class TreeUtil {
    public static TreeNode toTree(Integer[] treeNode) {
        List<TreeNode> listNode = new ArrayList<>();
        for (int i = 0; i < treeNode.length; i++) {
            if (treeNode[i] == null) {
                listNode.add(null);
            } else {
                listNode.add(new TreeNode(treeNode[i]));
            }

        }

        for (int j = 0; j < listNode.size() / 2 - 1; j++) {
            listNode.get(j).left = listNode.get(j * 2 + 1) != null ? listNode.get(j * 2 + 1) : null;
            listNode.get(j).right = listNode.get(j * 2 + 2) != null ? listNode.get(j * 2 + 2) : null;
        }
        //最后一个点可能没有右端点
        if (listNode.size() % 2 != 0) {
            listNode.get(listNode.size() / 2 - 1).left = listNode.get(listNode.size() - 2);
            listNode.get(listNode.size() / 2 - 1).right = listNode.get(listNode.size() - 1);
        } else {
            listNode.get(listNode.size() / 2 - 1).left = listNode.get(listNode.size() - 1);
        }

        return listNode.get(0);
    }

    public static void main(String[] args) {
        Integer[] input = new Integer[]{10, 5, 15, null, null, 6, 20};
        System.out.println(TreeUtil.toTree(input));
    }
}
